package com.magic.upload.service;

import com.github.tobato.fastdfs.domain.StorePath;
import com.github.tobato.fastdfs.service.FastFileStorageClient;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.util.Arrays;
import java.util.List;

/**
 * @author lan.jianyuan
 * @create 2021-01-07-21:11
 */
@Service
public class UploadService {
    private static final Logger logger = LoggerFactory.getLogger(UploadService.class);
    
    // 支持的文件类型
    private static final List<String> suffixes = Arrays.asList("image/png", "image/jpeg");
    @Autowired
    private FastFileStorageClient storageClient;
    
    public String upload(MultipartFile file) {
        try {
            // 1、图片信息校验
            String originalFilename = file.getOriginalFilename();
            // 1)校验文件类型
            String type = file.getContentType();
            if (!suffixes.contains(type)) {
                logger.info("上传失败，文件类型不匹配：{}", type);
                return null;
            }
            // 2)校验图片内容
            BufferedImage image = ImageIO.read(file.getInputStream());
            if (image == null) {
                logger.info("上传失败，文件内容不符合要求：{}", type);
                return null;
            }
            // 2、保存图片
            // 2.1、生成保存目录
            /*File dir = new File("D:\\richang\\bishe\\images");
            if (!dir.exists()) {
                dir.mkdirs();
            }
            // 2.2、保存图片
            file.transferTo(new File(dir, file.getOriginalFilename()));*/
            String ext = StringUtils.substringAfterLast(originalFilename, ".");
            StorePath storePath = this.storageClient.uploadFile(file.getInputStream(), file.getSize(), ext, null);
    
            // 2.3、拼接图片地址
            //String url = "http://images.magic.com:10004/" + file.getOriginalFilename();
    
            return "http://39.103.78.196/" + storePath.getFullPath();
        }
        catch (Exception e) {
            return null;
        }
    }
}